<?php
	//header('Access-Control-Allow-Origin: http://localhost:81/');
    //header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
    //header('Access-Control-Max-Age: 1000');
    //header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
    		

	// Prevent caching.
	header('Cache-Control: no-cache, must-revalref_produtoate');
	header('Expires: Mon, 01 Jan 1996 00:00:00 GMT');

	// The JSON standard MIME header.
	header('Content-type: application/json');

	
	//http://localhost:81/3clvpn/Client/json.php?metodo=1&user_unique_id=3&ref_produto=42&nome_categoria_produto=catdalocura
	switch ($_GET['metodo']) {
    	case 1:
        	//echo "notificaProduto \n";
        	processaNotificaProduto();
        break;
        case 2:
        	//echo "notificaPaginaCategoria \n";
        	processaNotificaPaginaCategoria();
        break;
        case 3:
        	//echo "notificaPesquisaEspecifica \n";
        	processaNotificaPesquisaEspecifica();
        break;
        case 4:
        	//echo "notificaTempoPaginaGenerica \n";
        	processaNotificaPesquisaGenerica();
        break;
        case 5:
        	//echo "notificaTempoPagina \n";
        	processaNotificaTempoPagina();
        break;
    }

    separaOsGarotosDosHomens();


	function processaNotificaProduto()
	{
		// GET variables
		$ref_produto = $_GET['ref_produto'];
		$nome_categoria_produto = $_GET['nome_categoria_produto'];

		//Verifica se tem um cookie salvo com o produto e categoria, caso não tenha salva
		if(isset($_COOKIE['nome_categoria_produto']))
		{
			if($_COOKIE['nome_categoria_produto'] != $nome_categoria_produto)
				atualizaCookieSessao('FA');//Cookie da notificação de nova categoria
			else
				atualizaCookieSessao('A');
		} else
		{
			atualizaCookieSessao('A');//Cookie da notificação do novo produto
		}
		
		setcookie('nome_categoria_produto', $nome_categoria_produto);
	}
	
	function processaNotificaPaginaCategoria()
	{
			// GET variables
			$nome_categoria = $_GET['nome_categoria'];

			if(isset($_COOKIE['nome_categoria']))
			{
				if($_COOKIE['nome_categoria'] != $nome_categoria)
					atualizaCookieSessao('FB');//Cookie da notificação de nova categoria
				else
					atualizaCookieSessao('B');
			} else
			{
				atualizaCookieSessao('B');//Cookie da notificação do novo produto
			}
			
			setcookie('nome_categoria', $nome_categoria);
		
	
		//atualizaCookieSessao('B');
		//TODO Passar um F também? Para quando muda de categoria também.
		
		
	}


	function processaNotificaPesquisaEspecifica()
	{		
		atualizaCookieSessao('C');
	}


	function processaNotificaPesquisaGenerica()
	{
		atualizaCookieSessao('D');		
	}


	function processaNotificaTempoPagina()
	{
		atualizaCookieSessao('E');
	}

	/*
	* Salva os dados da navegação do usuário em uma tabela do excel no servidor
	*/
	function saveUserPathAndProfile()
	{
		//sleep(1);
		require_once "Excel/Classes/PHPExcel/IOFactory.php";
 
		//load Excel template file
		$objTpl = PHPExcel_IOFactory::load("dados.xls");
		$objTpl->setActiveSheetIndex(0);  //set first sheet as active
		 
		$lastRow = $objTpl->getActiveSheet()->getHighestRow() +1;
		$user_unique_id = "";
		$id_perfil_sessao = "";
		$path = "";

		if(isset($_COOKIE['user_unique_id']))
			$user_unique_id = $_COOKIE['user_unique_id'];

		if(isset($_COOKIE['id_perfil_sessao']))
			$id_perfil_sessao = $_COOKIE['id_perfil_sessao'];

		if(isset($_COOKIE['path']))
			$path = $_COOKIE['path'];


		//PARA SUBSTITUIR OS DADOS DO ID UNICO AO INVÉS DE ADICIONAR UM NOVO
		$column = 'A';
		for ($row = 1; $row < $lastRow; $row++) {
			$cell = $objTpl->getActiveSheet()->getCell($column.$row);

			if($cell == $user_unique_id)
			{
				$lastRow = $row;
				break;
			}
		}
		
		
		$objTpl->getActiveSheet()->setCellValue('A'.$lastRow, $user_unique_id);  
		$objTpl->getActiveSheet()->setCellValue('B'.$lastRow, $id_perfil_sessao);  
		$objTpl->getActiveSheet()->setCellValue('C'.$lastRow, $path);  
		
		$objWriter = PHPExcel_IOFactory::createWriter($objTpl, 'Excel5');
		$objWriter->save('dados.xls');  

	}

	/**
	* ADICIONA UM NOVO ELEMENTO NA 'PILHA' DE CAMINHOS PERCORRIDOS PELO USUÁRIO DA SESSÃO
	* SALVA ESTES DADOS NOS COOKIES DO PRÓPRIO USUÁRIO
	*/
	function atualizaCookieSessao($etapa)
	{
		if(isset($_COOKIE['path']))
			$etapa = $_COOKIE['path'] . $etapa;

		//SALVA O PATH COM TIMEOUT DE 5 MIN
		//setcookie('path', $etapa, mktime().time()+60000*1);
		setcookie('path', $etapa);
		$_COOKIE['path'] = $etapa;

	}

  
   /**
	* SALVA O ID DO PERFIL ENCONTRADO NOS COOKIES
	* DA SESSÃO COM O NOME 'id_perfil_sessao'
	*/
	function saveProfileToCookie($id_perfil_sessao)
	{
		
		//SALVA O PATH COM TIMEOUT DE 5 MIN
		if(isset($_COOKIE['id_perfil_sessao']))
			$id_perfil_sessao = $_COOKIE['id_perfil_sessao'] . $id_perfil_sessao;

		setcookie('id_perfil_sessao', $id_perfil_sessao);
		
		//para já deixar atualizado para o resto das funções. 
		$_COOKIE['id_perfil_sessao'] = $id_perfil_sessao;
	
	}
	
	function hasPerfilIn($numero){
		if(isset($_COOKIE['id_perfil_sessao']))
		{
			$id_perfil_sessao = $_COOKIE['id_perfil_sessao'];
			$len = strlen($id_perfil_sessao);
			for ($n = 1; $n <= $numero; $n++)
			{
				
				if ($id_perfil_sessao[$len - $n] != '0')
				{
					return true;
				}
			}
			return false;
		}else
		{
			return false;
		}
	}

	/**
	* FUNÇÃO QUE SEPARA OS GAROTOS DOS HOMENS
	*/
	function separaOsGarotosDosHomens()
	{
		if(isset($_COOKIE['path'])){
			$path = $_COOKIE['path'];
			
			$matches = array();//DA(FA)+{5prod e 2 cat}
			$trajetos = "/(CA$)|(DAE?$)|(BAE?$)|(B.{0,3}B.{0,3}B$)|(FA*FA*FA*$|AF*AF*AF*AF*AF*AF*$)|(([BD]A*FA*FA*$|[BD][AF]$|[BD]AF{0,2}AF{0,2}AF{0,2}AF{0,2}A$|[BD]AF{0,2}AF{0,2}AF{0,2}$|[BD]AF{0,2}AF{0,2}AF{0,2}AF{0,2}$))/i";
			//				p1	  p2     p2		 p4(ver sobre esse) p4								 p3
			$resp = preg_match($trajetos, $path, $matches);

			//var_dump($matches);
			$id = 0;
			$i = 0;

			for($i = 1; $i <= count($matches); $i++)
			{
				if(!$matches[$i] == "")
				{
					$id = $i;
					break;
				}
			}

			switch ($id) {
				case 1:
					saveProfileToCookie(1);
					break;
				case 2:
				case 3:
					saveProfileToCookie(2);
					break;
				case 4:
				case 5:
					saveProfileToCookie(4);
					break;
				case 6:
					saveProfileToCookie(3);
					break;
				default:
					# code...
					if(!hasPerfilIn(5))
					{
						saveProfileToCookie(4);
					}else
					{
						saveProfileToCookie(0);
					}
					break;
			}

			//saveUserPathAndProfile();
		}else{
			saveProfileToCookie(0);
		}
		saveUserPathAndProfile();
	}
?>